package uk.ac.manchester.tewpl.iceiface.client.curriculummap;

import java.util.Collection;

import com.google.gwt.user.client.rpc.AsyncCallback;

import uk.ac.manchester.tewpl.iceiface.client.model.KBIndividualModel;

/*
 * Abstract class used to represent both Airports and Terminals,
 * forcing the provision of filter functionality
 */
public abstract class Node {
	
	// Return the node's uri
	protected abstract Uri getUri();
	protected abstract String getLabel();
	
	// Filter method
	protected abstract void getResultsWithFilter(String filter, AsyncCallback<Collection<FilterResult>> results);
	
	// Filter results getter/setter
	protected abstract void addFilterResult(FilterResult result);
	protected abstract Collection<FilterResult> getFilterResults();
	
	// Filter results remover
	protected abstract void removeFilterResult(FilterResult result);
	
	// Filter keywords getter/adder
	protected abstract Collection<String> getFilterKeywords();
	protected abstract void addFilterKeyword(String filter);

	// Clear filter results
	protected abstract void clearFilteredResults();
	
	// Return the number of results/members
	protected abstract int getCount();
	
	// Boolean for filter being applied
	protected abstract void setFilterIsApplied();
	
}
